Viterbi decoding is commonly used as a technique for recovering the most likely sequence of information bits that have been encoded with convolutional coding and degraded by transmission through a communication channel. A Viterbi decoder uses a trellis diagram representation of the convolutional code, to model the code as a set of states and branches. At a time n, the code occupies state Sn. The branches of the trellis diagram denote allowable transitions between states. In Viterbi decoding, a metric is associated with each state and each transition between states (branch). The metric reflects the likelihood of the code occupying that state at that time instant given the received bits. In general, a higher metric value implies that a state is less likely at that time instant, although lower values for less likely states equivalently may be used. Using the state metric at time n−1, the metric for each possible next state at time n is computed by the three step Viterbi algorithm. In the three step Viterbi algorithm the path metrics, which represent the likelihood of entering a state from an allowable path, are added. The path metrics for various paths are compared and the lowest metric is then selected as the most probable path. Using this add, compare select algorithm, a Viterbi decoder can determine the most likely sequence of information bits by tracing the sequence of branches, having the maximum likelihood, leading to a particular state. Viterbi decoding, while simpler than iterative forms of decoding such as MAP (Maximum A Posteriori) or soft Viterbi decoding, in general does not perform as well. There is therefore a need in the art for improved Viterbi decoding which is less complex than the iterative forms of decoding.